﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Bricks.MiuiThemeMaker.OrmModel;

namespace Bricks.MiuiThemeMaker.BRMiuiThemeMaker
{
    /*********************************************************
     * 1.版权：积木工场 Bricks Factory
     * 2.作用：元数据BLL（含类型等）
     * 3.创建人：罗泽新
     * 4.创建日期：2012-04-28
     * 5.最后修改人：罗泽新
     * 6.最后修改日期：2012-04-28
     * 7.修改项目：
     * *******************************************************/
    public class MetaDataBLL
    {
        ///// <summary>
        ///// 获取元数据类型列表（供两种视图使用：预览视图和文件夹视图）
        ///// </summary>
        ///// <param name="vType">视图类型枚举（All：全部，Preview：预览视图，Folder：文件夹视图</param>
        ///// <param name="dbType">数据库类型</param>
        ///// <returns></returns>
        //public List<BF_MetaDataType> GetMetaDataType(ViewType vType, DBType dbType)
        //{
        //    List<BF_MetaDataType> result = new List<BF_MetaDataType>();
        //    switch (dbType)
        //    {
        //        case DBType.MsSql: break;
        //        case DBType.SqlCompact:
        //            using (DBEntities dbContext = new DBEntities())
        //            {
        //                var query = from m in dbContext.BF_MetaDataType
        //                            select m;
        //                if (vType != ViewType.All)
        //                {
        //                    query = from m in query
        //                            where m.ViewType == Int32.Parse(vType.ToString())
        //                            select m;
        //                }
        //                result = query.OrderBy(v => v.OrderNo).ToList();
        //            }
        //            break;
        //    }
        //    return result;
        //}

        //#region 获取元数据类型下属列表 暂时作废
        ///// <summary>
        ///// 获取元数据类型下属列表
        ///// </summary>
        ///// <param name="parentID">父ID</param>
        ///// <param name="dbType">数据库类型</param>
        ///// <returns></returns>
        ////public List<BF_MetaDataType> GetMetaDataTypeChildren(Guid parentID, DBType dbType)
        ////{
        ////    List<BF_MetaDataType> result = new List<BF_MetaDataType>();
        ////    switch (dbType)
        ////    {
        ////        case DBType.MsSql: break;
        ////        case DBType.SqlCompact:
        ////            using (DBEntities dbContext = new DBEntities())
        ////            {
        ////                var query = from m in dbContext.BF_MetaDataType
        ////                            where m.ParentID == parentID
        ////                            select m;
        ////                result = query.OrderBy(v => v.OrderNo).ToList();
        ////            }
        ////            break;
        ////    }
        ////    return result;
        ////}
        //#endregion

        ///// <summary>
        ///// 获取元数据的树结构（重点）
        ///// </summary>
        ///// <param name="mdType">元数据分类实体</param>
        ///// <param name="vType">视图类型枚举（All：全部，Preview：预览视图，Folder：文件夹视图</param>
        ///// <param name="dbType">数据库类型</param>
        ///// <returns></returns>
        //public List<MetaDataNode> GetMetaDataTree(BF_MetaDataType mdType, ViewType vType, DBType dbType)
        //{
        //    List<MetaDataNode> result = new List<MetaDataNode>();
        //    switch (dbType)
        //    {
        //        case DBType.MsSql: break;
        //        case DBType.SqlCompact:
        //            using (DBEntities dbContext = new DBEntities())
        //            {
        //                var query = from m in dbContext.BF_Element
        //                            orderby m.ParentID, m.OrderNo
        //                            select new MetaDataNode
        //                            {
        //                                //StandardData = m
        //                            };
        //                List<MetaDataNode> queryList = query.ToList();

        //                MetaDataNode tv = new MetaDataNode();

        //                result = queryList.Where(v => v.ParentID == Guid.Empty).ToList();
        //                //默认展开第一层
        //                //foreach (var item in result)
        //                //{
        //                //    item.IsExpanded = true;
        //                //}
        //                tv.Children.AddRange(result);
        //                foreach (var item in tv.Children)
        //                {
        //                    CreateSubTree(item, queryList);
        //                }
        //            }
        //            break;
        //    }
        //    return result;
        //}

        ///// <summary>
        ///// 创建子节点
        ///// </summary>
        ///// <param name="root"></param>
        ///// <param name="list"></param>
        //private void CreateSubTree(MetaDataNode root, List<MetaDataNode> list)
        //{
        //    foreach (var item in list)
        //    {
        //        if (item.ParentID == root.ID)
        //        {
        //            root.Children.Add(item);
        //            CreateSubTree(item, list);  //递归子节点
        //        }
        //    }
        //}
    }

    /// <summary>
    /// 元数据节点实体（以下所有属性都需要认真考虑是否需要，是否多余？）
    /// </summary>
    //public class MetaDataNode
    //{
    //    /// <summary>
    //    /// ID
    //    /// </summary>
    //    public Guid ID { get; set; }
    //    /// <summary>
    //    /// 节点名称
    //    /// </summary>
    //    public string Name { get; set; }
    //    /// <summary>
    //    /// 难度系数
    //    /// </summary>
    //    public DifficultyType DType { get; set; }
    //    /// <summary>
    //    /// 子节点
    //    /// </summary>
    //    public List<MetaDataNode> Children { get; set; }
    //    /// <summary>
    //    /// 编辑状态
    //    /// </summary>
    //    public EditStatus EStatus { get; set; }
    //    /// <summary>
    //    /// 根节点
    //    /// </summary>
    //    public MetaDataNode RootNode { get; set; }
    //    /// <summary>
    //    /// 父节点
    //    /// </summary>
    //    public MetaDataNode ParentNode { get; set; }
    //    /// <summary>
    //    /// 父ID（有上面的父节点，父ID可以省略）
    //    /// </summary>
    //    public Guid? ParentID { get; set; }
    //    /// <summary>
    //    /// 路径
    //    /// </summary>
    //    public string Path { get; set; }
    //    /// <summary>
    //    /// 宽
    //    /// </summary>
    //    public double Width { get; set; }
    //    /// <summary>
    //    /// 高
    //    /// </summary>
    //    public double Height { get; set; }
    //    /// <summary>
    //    /// X坐标
    //    /// </summary>
    //    public double XCoordinate { get; set; }
    //    /// <summary>
    //    /// Y坐标
    //    /// </summary>
    //    public double YCoordinate { get; set; }
    //    /// <summary>
    //    /// 层
    //    /// </summary>
    //    public int Layer { get; set; }
    //    /// <summary>
    //    /// 节点类型（元数据类型、元数据）
    //    /// </summary>
    //    public NodeType NType { get; set; }
    //    /// <summary>
    //    /// 备注
    //    /// </summary>
    //    public string Remark { get; set; }
    //    /// <summary>
    //    /// 排序
    //    /// </summary>
    //    public int OrderNo { get; set; }
    //}
}
